package com.grantheath.erebus.model.interfaces 
{
	import com.grantheath.erebus.model.interfaces.IErebusAssetNode;
	import com.grantheath.erebus.model.interfaces.IErebusPageNode;

	import org.puremvc.as3.interfaces.IProxy;
	
	/**
	 * @author grantheath
	 */
	public interface IErebusSiteTreeProxy extends IProxy 
	{
		function getPageNodeFromURL(URL : String) : IErebusPageNode;
		function getPageNodeFromURLArray(URLArray : Array) : IErebusPageNode;
		function filterNullArrayValues(element : String, index : uint, arr:Array) : Boolean;
		function incrementLoadQueue() : IErebusPageNode;
		function incrementDisplayQueue() : IErebusPageNode;
		function incrementUninitializeQueue() : IErebusPageNode;
		function incrementHideQueue() : IErebusPageNode;
		function incrementAssetQueue() : IErebusAssetNode;
		function registerLoadedPageNode(loadedPageNode : IErebusPageNode) : void;
		function registerDisplayedPageNode(displayedPageNode : IErebusPageNode) : void;
		function unregisterLoadedPageNode(loadedPageNode : IErebusPageNode) : void;
		function unregisterDisplayedPageNode(displayedPageNode : IErebusPageNode) : void;
		function isLoaded(pageNode : IErebusPageNode) : Boolean;
		function isDisplayed(pageNode : IErebusPageNode) : Boolean;
		
		//GETTERS AND SETTERS
		function get tree() : IErebusPageNode;
		function set tree(tree : IErebusPageNode) : void;
		function get loadQueue() : Array;
		function set loadQueue(loadQueue : Array) : void;
		function get displayQueue() : Array;
		function set displayQueue(displayQueue : Array) : void;	
		function get uninitializeQueue() : Array;
		function set uninitializeQueue(uninitializeQueue : Array) : void;
		function get hideQueue() : Array;
		function set hideQueue(hideQueue : Array) : void;
		function get assetQueue() : Array;		
		function set assetQueue(assetQueue : Array) : void;
		function get loadedPages() : Array;
		function set loadedPages(loadedPages : Array) : void;
		function get displayedPages() : Array;
		function set displayedPages(displayedPages : Array) : void;
		function get isTransitioning() : Boolean;
		function set isTransitioning(isTransitioning : Boolean) : void;
		function get interuptTransition() : Boolean;
		function set interuptTransition(interuptTransition : Boolean) : void;
		function get lastDisplayed() : IErebusPageNode;
		function get initialized() : Boolean;
	}
}
